﻿/** 
 *   Enemigo: El mono que permanecera haciendo animaciones
 * 	          en la parte superior y que lanzara barriles
 *  
 *   @see Hardware ElemGrafico Juego
 *   @author 1-DAI IES San Vicente 2010/11
 */

/* --------------------------------------------------
   Versiones hasta la fecha:
   
   Num.   Fecha       Por / Cambios
   ---------------------------------------------------
   0.02  20-Ene-2011  Héctor Pastor
   					  El enemigo hace animaciones sin moverse,
   					  aun no lanza barriles
   
   ---------------------------------------------------- */
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using System.Collections;

class Enemigo : ElemGrafico
{
    ContentManager contenido;
    ArrayList misBarriles = new ArrayList();
	//Constructor
	public Enemigo(ContentManager c) : base("mono2", c)
	{
		MoverA(232,130); //Coordenadas iniciales
		CargarSecuencia(ARRIBA,
		                new string[] {"mono1", 
		                	"mono1", "mono1"}, c);

        CargarSecuencia(DERECHA,
                        new string[] {"mono2", 
		                	"mono2", "mono2"}, c);

        contenido = c;
		direccion = ARRIBA;
		SetAnchoAlto(88,68);
	}

    public void LanzarBarril()
    {
        CambiarDireccion(DERECHA);
        SiguienteFotograma();
        CambiarDireccion(ARRIBA);
        Barril miBarril = new Barril(contenido);
        misBarriles.Add(miBarril);
    }

    public void moverBarriles()
    {
        for (int i = 0; i < misBarriles.Count; i++)
        {
            if (((Barril)misBarriles[i]).GetX() >= 620) 
                ((Barril)misBarriles[i]).setDireccion(-1);
            
            else if (((Barril)misBarriles[i]).GetX() <= 180)
                ((Barril)misBarriles[i]).setDireccion(-1);

            if (((Barril)misBarriles[i]).GetY() <= 510)
            {
                if (((Barril)misBarriles[i]).GetX() >= 580)
                    ((Barril)misBarriles[i]).setY(1);

                if (((Barril)misBarriles[i]).GetX() <= 210)
                    ((Barril)misBarriles[i]).setY(1);


                if (((Barril)misBarriles[i]).GetX() % 7 == 0)
                    ((Barril)misBarriles[i]).setY(1);
            }

            if ((((Barril)misBarriles[i]).GetY() > 510)&&
                (((Barril)misBarriles[i]).GetX() < 190))
                misBarriles.RemoveAt(i);

            ((Barril)misBarriles[i]).setX
                (((Barril)misBarriles[i]).getDireccion());

            ((Barril)misBarriles[i]).SiguienteFotograma();
        }
    }

    public Barril getBarril(int j)
    {
        return ((Barril)misBarriles[j]);
    }

    public int getNumBarriles()
    {
        return misBarriles.Count;
    }
}
